package kjh820909.basic;

import java.util.Scanner;

public class J21_BookDBMain {

	// JDBC 서비스 클래스, 키보드입력 클래스는
	// 객체 생성없이 바로 사용할 수 있도록
	// static 으로 선언
	private static J20_BookDBDAO srv
		= new J20_BookDBDAO();
	private static Scanner sc
		= new Scanner(System.in);
	
	private static final String TITLE =
			" -= BookDB 프로그램 +- ";
	private static final String MENU =
	" a)추가 b)전체조회 c)상세조회 d)수정 e)삭제 q)종료 ";
	private static final String VIEWMSG =
			" 상제 조회할 책 번호 입력 ";
	private static final String ADDMSG =
			" 제목,출판사,저자 순으로 입력 ";
	private static final String UPDMSG =
			" 수정할 책 번호를 입력  ";
	private static final String DELMSG =
			" 삭제할 책 번호를 입력  ";
	
	
	
	public static void main(String[] args) {
	 
		System.out.println(TITLE);
		while(true){
			System.out.println(MENU);
			switch (sc.nextInt()){
			case 1: newBookDB(); break;
			case 2: readBookDB(); break;
			case 3: readOneBookDB(); break;
			case 4: modifyBookDB(); break;
			case 5: removeBookDB(); break;
			case 0: sc.close();
			System.out.println("종료");
				System.exit(0);
				break;
			}
		}

	}
	// Main 클래스에서 DAO클래스의 메서드를
	// 직접 호출하는 것은 OOP 개념에 다소 위배
	// 캡슐화와 보안, 유지보수 관점에서 볼때
	// 서비스 객체를 하나 더 만들어
	// 그것을 통해 DAO 클래스의 메서드를
	// 호출하는 것이 더 나음
	
	// 즉, Main -> DAO 보다는
	// Main -> service -> DAO 가 나음
	
	// DAO클래스의 메서드를 호출하는
	// 서비스 메서드를 static으로 선언
	private static void newBookDB(){
		System.out.println(ADDMSG);
		J20_BookDBVO bvo =
				new J20_BookDBVO(
				sc.next(), sc.next(), sc.next());
		int cnt = srv.insertBookDB(bvo);
		if(cnt>0)System.out.println("추가성공!");
		}
	private static void readBookDB(){
		System.out.println(
		srv.selectBookDB());}
	private static void readOneBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(VIEWMSG);
		String id = sc.next();
		System.out.println(
		srv.selectBookDB(id));}
	private static void modifyBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(UPDMSG);
		String id = sc.next();
		System.out.println(ADDMSG);
		J20_BookDBVO bvo =
				new J20_BookDBVO(sc.next(),sc.next(),sc.next());
		bvo.setId(id);
		if(srv.updateBookDB(bvo)>0)
			System.out.println("수정완료!");}
	private static void removeBookDB(){
		System.out.println(srv.selectBookDB());
		System.out.println(DELMSG);
		String id = sc.next();
		if(srv.deleteBookDB(id)>0)
			System.out.println("삭제완료!");
		}
}
